package com.hengpeng.itfinoss.service;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.common.persist.entity.OperateLog;
import com.hengpeng.common.persist.entity.OperateLog.OperationType;
import com.hengpeng.common.persist.query.model.Order.OrderType;

/**
 * <pre>
 * 操作日志服务层接口
 * </pre>
 * @author CHARLES
 * @version 1.0, 2010-8-10
 */
public interface OperateLogService 
{
	/**
	 * <pre>
	 * 保存日志信息
	 * </pre>
	 * @param userId 操作员编号
	 * @param entityName 操作实体名称
	 * @param entityId 操作实体主键
	 * @param operateTime 创建时间
	 * @param description 描述
	 */
	public void operateLogSave(String userId, String entityName, String entityId, Date operateTime, String description);

	/**
	 * <pre>
	 * 更新数据 操作
	 * </pre>
	 * @param userId 操作员编号
	 * @param entityName 操作实体名称
	 * @param entityId 操作实体主键
	 * @param operateTime 创建时间
	 * @param description 描述
	 */
	public void operateLogModify(String userId, String entityName, String entityId, Date operateTime, String description);

	/**
	 * <pre>
	 * 删除数据 操作
	 * </pre>
	 * @param userId 操作员编号
	 * @param entityName 操作实体名称
	 * @param entityId 操作实体主键
	 * @param operateTime 创建时间
	 * @param description 描述
	 */
	public void operateLogDelete(String userId, String entityName, String entityId, Date operateTime, String description);
	
	/**
	 * <pre>
	 * 分页查询操作日志记录
	 * </pre>
	 * @param userId        操作员编号
	 * @param entityName    操作实体名称
	 * @param entityId      被操作实体主键
	 * @param operateTime1  操作时间（开始）
	 * @param operateTime2  操作时间（结束）
	 * @param description   描述
	 * @param operationType 操作类型
	 * @param pageIndex     当前页号
	 * @param pageSize      每页显示记录数
	 * @param sortMap       排序集合
	 * @return
	 */
	public ServiceResult<List<OperateLog>> selectOperateLogPage(String userId,String entityName, String entityId, Date operateTime1,Date operateTime2, String description,OperationType operationType,int pageIndex,int pageSize,LinkedHashMap<String,OrderType> sortMap);
	
	public ServiceResult<Long> selectOperateLogCount(String userId,String entityName, String entityId, Date operateTime1,Date operateTime2, String description,OperationType operationType);
}
